/*****************************************************************************************
 * 文件名   ：FunctionSet.c
 * 描述     ：MCU型号：中颖 SH79F083A   
 * 编译器   ：KEIL_C51_V5.14.2
 * 版本     ：V1.0.0
 * 作者     ：夏毅承
 * 修改时间 ：2016-10-14
 *
 * 说明     ：该文件主要完成对Uart发送的参数功能设置操作
 *****************************************************************************************/

#include "..\Inc\Includes.h" 

/**************************************************************************
 * 函数名		：ParameterSendSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：发送的参数设置
 *************************************************************************/	
 void ParameterSendSet(void)
 {
		GearParameterSendSet();																																//档位值发送值
		U8_UartSendData[CONTRLLER_SET_ONE_BYTE_INDEX] = FirstControllerSetByte;								//控制器设定1发送参数值

		U8_UartSendData[CONTRLLER_SET_TWO_BYTE_INDEX] = SecondControllerSetByte;							//控制器设定2发送参数值
		
		U8_UartSendData[SPEED_HIGH_BYTE_INDEX] = (U16_HandleTo_PWM_Duty>>8);									//转把PWM百分比高字节
		U8_UartSendData[SPEED_LOW_BYTE_INDEX] = (U16_HandleTo_PWM_Duty&0xFF);									//转把PWM百分比低字节
		U8_UartSendData[LOW_VOLTAGE_HIGH_BYTE_INDEX] = (U16_LowVoltageValue>>8);
		U8_UartSendData[LOW_VOLTAGE_LOW_BYTE_INDEX] = (U16_LowVoltageValue&0xFF);							//欠压值发送值
		
		//U8_UartSendData[CURRENT_VALUE_BYTE_INDEX] = U8_WorkCurrentValue;											//发送工作电流值
		
		//U8_UartSendData[WHEEL_DIAMETER_HIGH_BYTE_INDEX] = (U16_WheelDiameterValue>>8);
		//U8_UartSendData[WHEEL_DIAMETER_LOW_BYTE_INDEX] = (U16_WheelDiameterValue&0xFF);				//轮径值发送设置

		//U8_UartSendData[SPEED_MEASURE_MAGNET_BYTE_INDEX] = U8_SpeedMeasureMagnetNumber;				//测速磁钢值发送设置
 }
 
/**************************************************************************
 * 函数名		：GreaParameterSendSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：发送的档位参数设置
 *************************************************************************/	
void GearParameterSendSet(void)
{
	
#if (GREA_NUMBER_INDEX==THREE_GREA_HELP)																													//3档助力
	if (U8_Gear_State==0x01)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x05;
	}	
	else if (U8_Gear_State==0x02)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0A;
	}	
	else if (U8_Gear_State==0x03)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0F;
	}
#elif (GREA_NUMBER_INDEX==FIVE_GREA_HELP)//		defined			FIVE_GREA_HELP																												//5档助力
	if (U8_Gear_State==0x01)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x03;
	}	
	else if (U8_Gear_State==0x02)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x06;
	}	
	else if (U8_Gear_State==0x03)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x09;
	}
	else if (U8_Gear_State==0x04)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0C;
	}
	else if (U8_Gear_State==0x05)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0F;
	}

#elif (GREA_NUMBER_INDEX==NINE_GREA_HELP)// 		defiend			NINE_GREA_HELP																												//9档助力
	if (U8_Gear_State==0x01)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x01;
	}	
	else if (U8_Gear_State==0x02)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x03;
	}	
	else if (U8_Gear_State==0x03)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x05;
	}
	else if (U8_Gear_State==0x04)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x07;
	}
	else if (U8_Gear_State==0x05)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x09;
	}
	else if (U8_Gear_State==0x06)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0B;
	}	
	else if (U8_Gear_State==0x07)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0D;
	}	
	else if (U8_Gear_State==0x08)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0E;
	}
	else if (U8_Gear_State==0x09)
	{
		U8_UartSendData[GREA_SAVE_BYTE_INDEX] = 0x0F;
	}

#endif 
}

/**************************************************************************
 * 函数名		：ParameterIncrementAdjustment()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：参数设置增加量调整
 *************************************************************************/
void ParameterAdjustment(void) 
{
	unsigned char									u8_blacklight_class = 0;

	switch (U8_FunctionMenuIndex)
	{
		case BLACKLIGHT_SET_INDEX:																														//背光亮度增量调节
		{
			BlacklightClassSet();																																//
			break;
		}
		case  MILEAGE_UNIT_SET_INDEX:																													//里程单位选择
		{	
			if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
			{
				KMH_OR_MPH_Flag = ~KMH_OR_MPH_Flag;																								//里程单位,置位为MHP为单位
				U16_ParameterValueStepBackup = U16_ParameterValueStep;
			}
			
			if (KMH_OR_MPH_Flag)
			{
				LCD_COM0_MPH_Flag = HIGH_LEVEL;																										//开“MPH”标识
			}
			else 
			{
				LCD_COM1_KMH_Flag = HIGH_LEVEL;																										//开“KMH”标识
			}
			U16_ParameterValueShowIndex = (unsigned char)KMH_OR_MPH_Flag;												//功能区显示里程单位
			break;
		}
		case  POWER_VOLTAGE_SET_INDEX:																												//电池工作电压设置
		{
			WorkPowerVoltageSet();
			break;
		}
		case  SLEEP_TIME_SET_INDEX:																														//休眠时间设置
		{
			SleepTimeSet();
			break;
		}
		case	ASISST_GEAR_SET_INDEX:																													//助力档位，只读
		{
			U16_ParameterValueShowIndex = GREA_NUMBER_INDEX;																		//功能区显示助力档位
			break;
		}			
		case  WHEEL_DIAMETER_SET_INDEX:																												//轮径设置
		{
			WheelDiameterSet();
			LCD_COM0_U1_Flag = HIGH_LEVEL;																											//开小数点
			break;
		}
		case  SPEED_MEASURE_MAGNET_SET_INDEX:																									//设置测速磁钢数
		{
			SpeedMeasureMagnetSet();
			break;
		}
		case  LIMIT_SPEED_SET_INDEX:																													//限速值设置
		{
			LimitSpeedSet();
			break;
		}
		case  RUN_TYPE_SET_INDEX:
		{
			if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)														//增量或减量键按动了
			{
				ControllerStartModeSetFlag = ~ControllerStartModeSetFlag;													//启动方式,置位为非零启动
				U16_ParameterValueStepBackup = U16_ParameterValueStep;
			}
			U16_ParameterValueShowIndex = (unsigned char)ControllerStartModeSetFlag;						//功能区显示启动方式
			break;
		}
		case  DRIVE_TYPE_SET_INDEX:																														//驱动方式设定
		{
			DriveTypeSet();
			break;
		}
		case  ASSIST_SENSITIVITY_SET_INDEX:																										//助力灵敏度设定
		{
			AssistSensitivitySet();
			break;
		}
		case  ASSIST_CLASS_SET_INDEX:																													//助力启动强度设定
		{
			AssistStartClassSet();
			break;
		}
		case	ASSIST_PULSE_SET_INDEX:																													//助力盘磁钢数设定
		{
			AssistMagnetNumber();
			break;
		}
    case  CURRENT_SET_INDEX:																															//限流设定
		{
			WorkCurrentSet();
			break;
		}
    case  LOW_VOL_SET_INDEX:																															//欠压值，只读
		{
			U16_ParameterValueShowIndex = U16_LowVoltageValue;																	//功能区显示电池欠压值
			LCD_COM0_U1_Flag = HIGH_LEVEL;																											//开小数点
			break;
		}
    case  ODO_RESET_SET_INDEX:																														//总里程清零
		{
			U16_ParameterValueShowIndex = U16_OdographNumber;
			break;
		}
	}
}	

/**************************************************************************
 * 函数名		：SetStateFunctionShow()
 * 输入参数 ：index
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：在设置状态下功能区数码显示值,这个函数主要是得到原来的值然后在此基础上做加减
 *						操作，只读的菜单不用添加代码，留空就可以了
 *************************************************************************/
 unsigned int SetStateFunctionShow(unsigned char		index)
 {
		unsigned int						u16_show_index = 0;
		switch (index)
	 {
		case BLACKLIGHT_SET_INDEX:																														//背光亮度增量调节
		{
			u16_show_index = U8_BlacklightClass;																									//功能区显示背光等级
			break;
		}
		case  MILEAGE_UNIT_SET_INDEX:																													//里程单位选择
		{
			u16_show_index = (unsigned char)KMH_OR_MPH_Flag;																		//功能区显示里程单位
			break;
		}
		case  POWER_VOLTAGE_SET_INDEX:																												//电池工作电压设置
		{
			u16_show_index = U8_RatedVoltageValue;																							//功能区显示电池电压值
			break;
		}
		case  SLEEP_TIME_SET_INDEX:				//4
		{
			u16_show_index = U8_SleepTimeValue;																									//功能区显示休眠时间值			
			break;
		}
		case	ASISST_GEAR_SET_INDEX:				//5
		{
			//u16_show_index = GREA_NUMBER_INDEX;																									//功能区显示助力档位
			break;
		}			
		case  WHEEL_DIAMETER_SET_INDEX:
		{
			u16_show_index = U16_WheelDiameterValue;																						//功能区显示轮径值
			break;
		}
		case  SPEED_MEASURE_MAGNET_SET_INDEX:																									//测速磁钢数设置
		{
			u16_show_index = U8_SpeedMeasureMagnetNumber;																				//功能区显示测速磁钢数
			break;
		}
		case  LIMIT_SPEED_SET_INDEX:																													//限速值设置
		{
			u16_show_index = U8_LimitSpeedValue;																								//功能区显示限速值
			break;
		}
		case  RUN_TYPE_SET_INDEX:
		{
			u16_show_index = (unsigned char)ControllerStartModeSetFlag;													//功能区显示启动方式
			break;
		}
		case  DRIVE_TYPE_SET_INDEX:																														//驱动方式设置
		{
			u16_show_index = U8_DriveTypeValue;																									//功能区显示驱动方式
			break;
		}
		case  ASSIST_SENSITIVITY_SET_INDEX:																										//助力灵敏度调节基准值
		{
			u16_show_index = U8_AssistSensitivityValue;																					//功能区显示助力灵敏度调节值
			break;
		}
		case  ASSIST_CLASS_SET_INDEX:
		{
			u16_show_index = U8_AssistStartClassValue;																					//功能区显示助力启动强度
			break;
		}
		case	ASSIST_PULSE_SET_INDEX:
		{
			u16_show_index = U8_AssistMagnetTypeSelect;																					//功能区显示磁盘种类
			break;
		}
    case  CURRENT_SET_INDEX:
		{
			u16_show_index = U8_WorkCurrentValue;																								//功能区显示工作电流
			break;
		}
    case  LOW_VOL_SET_INDEX:																															//只读
		{
			//u16_show_index = U16_LowVoltageValue;																								//功能区显示电池欠压值
			break;
		}
    case  ODO_RESET_SET_INDEX:																														
		{
			u16_show_index = U16_OdographNumber;																								//功能区显示总里程数
			break;
		}
	}
	
	return (u16_show_index);
 }
/**************************************************************************
 * 函数名		：BlacklightClassSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：背光等级设置
 *************************************************************************/
void BlacklightClassSet(void)
{	
	if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)																	//增量或减量键按动了
	{
		if (U16_ParameterValueStep<BLACKLIGHT_CLASS_FIRST)																			//如果已经是亮度等级最小
		{
			U16_ParameterValueStep = BLACKLIGHT_CLASS_THIRD;																			//就回跳到最高等级
		}
		else if (U16_ParameterValueStep>BLACKLIGHT_CLASS_THIRD)																//如果已经是亮度等级最大
		{
			U16_ParameterValueStep = BLACKLIGHT_CLASS_FIRST;																			//就回跳到最小等级
		}
		U8_BlacklightClass = U16_ParameterValueStep;																						//得到当前修改后的亮度等级
		U16_ParameterValueStepBackup = U16_ParameterValueStep;																	//备份当前亮度等级状态
	}

//----------------------------------------------------------------------------------------//			
	if (U8_BlacklightClass==BLACKLIGHT_CLASS_FIRST)																					//1级亮度
	{
		U8_Blacklight_PWM_Value = BLACKLIGHT_CLASS_LOW;																				//
	}
	else if (U8_BlacklightClass==BLACKLIGHT_CLASS_SECOND)																		//2级亮度																																								//
	{
		U8_Blacklight_PWM_Value = BLACKLIGHT_CLASS_MIDDLE;
	}
	else if (U8_BlacklightClass==BLACKLIGHT_CLASS_THIRD)																		//3级亮度																																								//
	{
		U8_Blacklight_PWM_Value = BLACKLIGHT_CLASS_HIGH;
	}
	PWMD = U8_Blacklight_PWM_Value;																													//开PWM
	U16_ParameterValueShowIndex = U8_BlacklightClass;																				//功能区显示背光等级
}

/**************************************************************************
 * 函数名		：WorkPowerVoltageSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：电池电压值设置
 *************************************************************************/
void WorkPowerVoltageSet(void)
{
	if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)																//增量或减量键按动了
	{
		if (U16_ParameterValueStep<BATTERY_VOL_24V)
		{
			U16_ParameterValueStep = BATTERY_VOL_48V;
		}
		else if (U16_ParameterValueStep>BATTERY_VOL_48V)
		{
			U16_ParameterValueStep = BATTERY_VOL_24V;
		}
		U8_RatedVoltageValue = U16_ParameterValueStep;																				//等到当前修改后的电池电压
		U16_ParameterValueStepBackup = U16_ParameterValueStep;
	}
//----------------------------------------------------------------------------------------//
	if (U8_RatedVoltageValue==BATTERY_VOL_24V)																							//24V电池
	{
		U16_ParameterValueShowIndex = RATED_VOLTAGE_24V;																			//功能区显示电池电压
		U16_LowVoltageValue = LOW_VOL_RATED_VOLTAGE_24V;																			//欠压值
		U8_BatteryCellVoltage = VOLTAGE_CELL_VALUE_24V;																				//24V电压下电池图标每格电压值
	}
	else if (U8_RatedVoltageValue==BATTERY_VOL_36V)																					//36V电池																																								//
	{
		U16_ParameterValueShowIndex = RATED_VOLTAGE_36V;																			//功能区显示电池电压
		U16_LowVoltageValue = LOW_VOL_RATED_VOLTAGE_36V;																			//欠压值
		U8_BatteryCellVoltage = VOLTAGE_CELL_VALUE_36V;																				//36V电压下电池图标每格电压值
	}
	else if (U8_RatedVoltageValue==BATTERY_VOL_48V)																					//48V电池																																						//
	{
		U16_ParameterValueShowIndex = RATED_VOLTAGE_48V;																			//功能区显示电池电压
		U16_LowVoltageValue = LOW_VOL_RATED_VOLTAGE_48V;																			//欠压值
		U8_BatteryCellVoltage = VOLTAGE_CELL_VALUE_48V;																				//48V电压下电池图标每格电压值
	}	

	//U8_UartSendData[LOW_VOLTAGE_HIGH_BYTE_INDEX] = (U16_LowVoltageValue>>8);
	//U8_UartSendData[LOW_VOLTAGE_LOW_BYTE_INDEX] = (U16_LowVoltageValue&0xFF);								//欠压值发送设置	
}

/**************************************************************************
 * 函数名		：SleepTimeSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：休眠时间设置
 *************************************************************************/
void SleepTimeSet(void)
{
	if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)																	//增量或减量键按动了
	{
		if (U16_ParameterValueStep>0x3C)																												//休眠时间超过最大值
		{
			if (U16_ParameterValueStepBackup==0)																									//如果之前的值是0，现在大于60说明按下了减量键,必须回跳到最大休眠时间值
			{
				U16_ParameterValueStep = 0x3C;																											//最大休眠时间为60分钟，0x3C==60
			}
			else 																																								//之前不等0说明按下的是增量键，必须回跳到0，完成循环调节
			{
				U16_ParameterValueStep = 0x00;																											//不休眠
			}
		}

		U8_SleepTimeValue = U16_ParameterValueStep;																						//等到当前修改后的休眠时间值
		U16_ParameterValueStepBackup = U16_ParameterValueStep;
	}
	U16_ParameterValueShowIndex = U8_SleepTimeValue;																				//功能区显示休眠时间
}

/**************************************************************************
 * 函数名		：SleepOperation()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：休眠操作,在100毫秒时基中调用
 *************************************************************************/
 void SleepOperation(void)
 {
		unsigned char 									u8_loop = 0;
		static unsigned int							u16_sleep_value = 0;
		
		if (SleepTimeFlag)																																		//开启休眠就执行休眠
		{
			if (U8_KeyValue!=NO_KEY)																														//有键动作就清休眠时间
			{
				u16_sleep_value = 0x00;
				U8_SleepTimeCount = 0x00;
			}
			
			if (U8_SleepTimeCount<U8_SleepTimeValue)																						//没到休眠时间
			{
				if ((++u16_sleep_value)>600)																											//0.1x10*60=1分钟
				{
					u16_sleep_value = 0x00;
					U8_SleepTimeCount++;
				}
			}
			else																																								//时间到进入休眠动作
			{
				for (;u8_loop<14; u8_loop++)																											//清显示缓存
				{
					LCD_RAM_Buffer.U8_LCD_DisplayBuffer[u8_loop] = 0x00;
				}
				LCD_SetNumber(SEGMENT_DISPLAYS_5, LCD_Code[0x00]);																//显示"O"
				LCD_SetNumber(SEGMENT_DISPLAYS_6, LCD_Code[0x0F]);																//显示"F"
				LCD_SetNumber(SEGMENT_DISPLAYS_7, LCD_Code[0x0F]);																//显示"F"
				HT1621_RefreshScreenDisplay(LCD_RAM_Buffer.U8_LCD_DisplayBuffer);									//显示刷新
				DelayForWork(1000);																																//延时1秒显示
				HT1621_Write_CMD(LCD_DISPLAY_OFF);																								//关LCD显示
				ACC_POWER_Bit = LOW_LEVEL;																												//关电门锁
				POWER_HOLD_Bit = LOW_LEVEL;																												//关机
			}	 
	 }
	 else																																										//没开休眠就检查是否需要休眠
	 {
			if ((!FunctionSetFlag)&&(U8_SleepTimeValue))																				//不在设置状态,并且有休眠时间才允许进入休眠状态,
			{
				SleepTimeFlag = TRUE;																															//开休眠					
			}
			else
			{
				SleepTimeFlag = FALSE;																														//关闭休眠功能
			}				

			u16_sleep_value = 0x00;
			U8_SleepTimeCount = 0x00;																														//清休眠计数器
	 }
 }
 
 /**************************************************************************
 * 函数名		：WheelDiameterSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：轮径值设置
 *************************************************************************/
 void WheelDiameterSet(void)
 {		
		if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
		{
			if (U16_ParameterValueStep<MIN_WHEEL_DIAMETER_VALUE)
			{
				U16_ParameterValueStep = MAX_WHEEL_DIAMETER_VALUE;
			}
			else if (U16_ParameterValueStep>MAX_WHEEL_DIAMETER_VALUE)
			{
				U16_ParameterValueStep = MIN_WHEEL_DIAMETER_VALUE;
			}
			U16_WheelDiameterValue = U16_ParameterValueStep;																		//得到当前修改后的轮径值
			U16_ParameterValueStepBackup = U16_ParameterValueStep;
		}
		U16_ParameterValueShowIndex = U16_WheelDiameterValue;																	//功能区显示轮径值
//----------------------------------------------------------------------------------------//
		U8_UartSendData[WHEEL_DIAMETER_HIGH_BYTE_INDEX] = (U16_WheelDiameterValue>>8);
		U8_UartSendData[WHEEL_DIAMETER_LOW_BYTE_INDEX] = (U16_WheelDiameterValue&0xFF);				//轮径值发送设置
 }
 
 /**************************************************************************
 * 函数名		：SpeedMeasureMagnetSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：测速磁钢设置
 *************************************************************************/
 void SpeedMeasureMagnetSet(void)
 {		
		if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
		{
			if (U16_ParameterValueStep<MIN_MAGENT_NUMBER)
			{
				U16_ParameterValueStep = MAX_MAGENT_NUMBER;
			}
			else if (U16_ParameterValueStep>MAX_MAGENT_NUMBER)
			{
				U16_ParameterValueStep = MIN_MAGENT_NUMBER;
			}
			U8_SpeedMeasureMagnetNumber = U16_ParameterValueStep;																//得到当前修改后的测速磁钢值
			U16_ParameterValueStepBackup = U16_ParameterValueStep;
		}
		U16_ParameterValueShowIndex = U8_SpeedMeasureMagnetNumber;														//功能区显示测速磁钢值
//----------------------------------------------------------------------------------------//
		U8_UartSendData[SPEED_MEASURE_MAGNET_BYTE_INDEX] = U8_SpeedMeasureMagnetNumber;				//测速磁钢值发送设置
 }
 
 /**************************************************************************
 * 函数名		：LimitSpeedSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：限速设置
 *************************************************************************/
 void LimitSpeedSet(void)
 {		
		if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
		{
			if (U16_ParameterValueStep==MIN_LIMIT_SPEED)
			{
				U16_ParameterValueStep = MAX_LIMIT_SPEED;
			}
			else if (U16_ParameterValueStep>MAX_LIMIT_SPEED)
			{
				U16_ParameterValueStep = MIN_LIMIT_SPEED;
			}
			U8_LimitSpeedValue = U16_ParameterValueStep;																				//得到当前修改后的限速值
			U16_ParameterValueStepBackup = U16_ParameterValueStep;
		}
		U16_ParameterValueShowIndex = U8_LimitSpeedValue;																			//功能区显示限速值
//----------------------------------------------------------------------------------------//
		U8_UartSendData[LIMIT_SPEED_BYTE_INDEX] = U8_LimitSpeedValue;													//限速值发送设置
 }
 
 /**************************************************************************
 * 函数名		：DriveTypeSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：驱动方式设置
 *************************************************************************/
 void DriveTypeSet(void)
 {		
		if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
		{
			if (U16_ParameterValueStep==0x00)
			{
				U16_ParameterValueStep = 0x02;
			}
			else if (U16_ParameterValueStep>0x02)
			{
				U16_ParameterValueStep = 0x00;
			}
			U8_DriveTypeValue = U16_ParameterValueStep;																					//得到当前修改后的驱动方式
			U16_ParameterValueStepBackup = U16_ParameterValueStep;
		}
		U16_ParameterValueShowIndex = U8_DriveTypeValue;																			//功能区显示驱动方式
//----------------------------------------------------------------------------------------//
		U8_UartSendData[DRIVE_MODE_BYTE_INDEX] = U8_DriveTypeValue;														//驱动方式发送设置
 }
 
 /**************************************************************************
 * 函数名		：SpeedMeasureMagnetSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：助力灵敏度设置
 *************************************************************************/
 void AssistSensitivitySet(void)
 {		
		if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
		{
			if (U16_ParameterValueStep<MIN_ASSIST_SENSITIVITY)
			{
				U16_ParameterValueStep = MAX_ASSIST_SENSITIVITY;
			}
			else if (U16_ParameterValueStep>MAX_ASSIST_SENSITIVITY)
			{
				U16_ParameterValueStep = MIN_ASSIST_SENSITIVITY;
			}
			U8_AssistSensitivityValue = U16_ParameterValueStep;																	//得到当前修改后的测速磁钢值
			U16_ParameterValueStepBackup = U16_ParameterValueStep;
		}
		U16_ParameterValueShowIndex = U8_AssistSensitivityValue;															//功能区显示测速磁钢值
//----------------------------------------------------------------------------------------//
		U8_UartSendData[ASSIST_SENSITIVITY_BYTE_INDEX] = U8_AssistSensitivityValue;						//测速磁钢值发送设置
 }
 
 /**************************************************************************
 * 函数名		：AssistStartClassSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：助力启动强度设置
 *************************************************************************/
 void AssistStartClassSet(void)
 {		
		if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
		{
			if (U16_ParameterValueStep==MIN_ASSIST_START_CLASS)
			{
				U16_ParameterValueStep = MAX_ASSIST_START_CLASS;
			}
			else if (U16_ParameterValueStep>MAX_ASSIST_START_CLASS)
			{
				U16_ParameterValueStep = MIN_ASSIST_START_CLASS;
			}
			U8_AssistStartClassValue = U16_ParameterValueStep;																	//得到当前修改后的助力启动强度值
			U16_ParameterValueStepBackup = U16_ParameterValueStep;
		}
		U16_ParameterValueShowIndex = U8_AssistStartClassValue;																//功能区显示助力启动强度值
//----------------------------------------------------------------------------------------//
		U8_UartSendData[ASSIST_START_CLASS_BYTE_INDEX] = U8_AssistStartClassValue;						//助力启动强度值发送设置
 }
 
 /**************************************************************************
 * 函数名		：AssistMagnetNumber()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：助力盘磁钢数设置
 *************************************************************************/
void AssistMagnetNumber(void)
{	
	if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)																//增量或减量键按动了
	{
		if (U16_ParameterValueStep<0x01)																											//如果已经是等级最小
		{
			U16_ParameterValueStep = 0x03;																											//就回跳到最高等级
		}
		else if (U16_ParameterValueStep>0x03)																									//如果已经是等级最大
		{
			U16_ParameterValueStep = 0x01;																											//就回跳到最小等级
		}
		U8_AssistMagnetTypeSelect = U16_ParameterValueStep;																						//得到当前修改后的助力磁钢脉冲数
		U16_ParameterValueStepBackup = U16_ParameterValueStep;																//备份当前亮度等级状态
	}

//----------------------------------------------------------------------------------------//			
	if (U8_AssistMagnetTypeSelect==0x01)																															//5磁钢磁盘
	{
		U8_AssistMagentNumberValue = ASSIST_MAGNET_5_UNIT;																		//
	}
	else if (U8_AssistMagnetTypeSelect==0x02)																												//8磁钢磁盘																																								//
	{
		U8_AssistMagentNumberValue = ASSIST_MAGNET_8_UNIT;
	}
	else if (U8_AssistMagnetTypeSelect==0x03)																												//12磁钢磁盘																																								//
	{
		U8_AssistMagentNumberValue = ASSIST_MAGNET_12_UNIT;
	}
	
	U16_ParameterValueShowIndex = U8_AssistMagentNumberValue;																//功能区显示磁盘种类
	SecondControllerSetByte &= 0xF0;																	//去除老的值
	SecondControllerSetByte += (U8_AssistMagentNumberValue&0x0F);			//加上新的值
}

/**************************************************************************
 * 函数名		：WorkCurrentSet()
 * 输入参数 ：无
 * 输出参数 ：无
 * 返回值  	：无
 * 修改时间 ：2017-09-15
 * 函数描述 ：工作电流设置
 *************************************************************************/
 void WorkCurrentSet(void)
 {		
		if (U16_ParameterValueStepBackup!=U16_ParameterValueStep)															//增量或减量键按动了
		{
			if (U16_ParameterValueStep<MIN_WORK_CURRENT)
			{
				U16_ParameterValueStep = MAX_WORK_CURRENT;
			}
			else if (U16_ParameterValueStep>MAX_WORK_CURRENT)
			{
				U16_ParameterValueStep = MIN_WORK_CURRENT;
			}
			U8_WorkCurrentValue = U16_ParameterValueStep;																				//得到当前修改后的电流值
			U16_ParameterValueStepBackup = U16_ParameterValueStep;
		}
		U16_ParameterValueShowIndex = U8_WorkCurrentValue;																		//功能区显示电流值
//----------------------------------------------------------------------------------------//
		U8_UartSendData[CURRENT_VALUE_BYTE_INDEX] = U8_WorkCurrentValue;											//电流值发送设置
 }
 
 
 
/**********************SINOWEALTH_SH79F083A**********END OF FILE*************************/
